Human languages are rich and complicated, including huge vocabularies with complex grammar and contextual meaning. The same thought or meaning can be expressed in a multiplicity of ways. In contrast, most machines or software applications require data to be input following very specific rules. Human operators or users can find these rigid rules frustrating. In addition, machine interfaces are frequently designed based upon the way in which the data will be utilized by the machine rather than based upon the operator's point of view. Consequently, operators may find machine interfaces counterintuitive or awkward. Operators may be required to spend time learning and adapting to the machine interface. Where the operator is a customer of a business employing the machine, this wasted time may be particularly frustrating and costly.
Some machines and/or software applications attempt to interpret human or natural language input to derive the input data required by the machine. However, machine interpretation of human language, even in a very limited way, is an extremely complex task and continues to be the subject of extensive research. Providing operators with the ability to communicate their desires to an automated system without requiring users to learn a machine specific language or grammar would decrease learning costs and greatly improve system usability. However, operators become quickly frustrated when automated systems and machines are unable to correctly interpret user input, leading to unexpected results.